#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<math.h>

int main()
{
	//while循环

	//int i = 0;
	//
	//while (i < 10)//当表达式为真时，重复执行循环体{ }
	//{
	//	//printf("%d ", i);
	//	//i++;

	//	printf("%d ", i++);
	//}
 //   printf("\n");

	//-------------------------------------------------

	//输入一个正整数，逆序打印出这个整数的每一位。
	//int num = 0;//循环变量初始化
	//printf("请输入一个正整数：");
	//scanf("%d", &num);

	//while (num != 0)//循环条件判断
	//{
	//	printf("%d ", num % 10);
 //       num /= 10;//循环变量调整
	//}
 //   printf("\n");


	//输入一个正整数，正序打印出这个整数的每一位。

	//方法一：除法、取余
	//int num = 0;
	//printf("请输入一个正整数：");
	//scanf("%d", &num);
	//int i = num;

	//int len = 0;
	//while (i != 0)
	//{
	//	len++;
	//	i /= 10;
	//}

	//while (len != 0)
	//{
	//	printf("%d ", num / (int)pow(10, len - 1));
	//	num %= (int)pow(10, len - 1);
	//	len--;

	//}
	//printf("\n");

	//方法二：递归


	//---------------------------------------------------

	//for循环

	//计算1到100之间3的倍数之和
 //   int sum = 0;
 //   for (int i = 1; i <= 100; i++)
 //   {
 //       if (i % 3 == 0)
 //       {
 //           sum += i;
 //       }
 //   }
 //   printf("%d\n", sum);

	////或者
 //   sum = 0;
 //   for (int i = 0; i <= 100; i += 3)
 //   {
 //       sum += i;
 //   }
 //   printf("%d\n", sum);

	//for循环三个部分可以省略不写
	//判断部分被省略，判断恒为真，死循环
	//for (; ; )
	//{
	//	printf("hello world\n");
	//}


	//---------------------------------------------------

	//do-while循环

    //int i = 0;
    //do//先执行循环体，再判断条件
    //{
    //    printf("%d ", i);
    //    i++;
    //} while (i < 10);//当表达式为真时，重复执行循环体{ }，至少执行一次循环体
    //printf("\n");

	//输入一个正整数，计算这个数是几位数
    //int num = 0;
    //printf("请输入一个正整数：");
    //scanf("%d", &num);
    //int len = 0;
    //do
    //{
    //    num /= 10;
    //    len++;
    //} while (num);
    //printf("%d位数\n", len);

	//---------------------------------------------------

	//break & continue
	
	//break：永久中止当前循环（跳出当前所在的循环）
	//continue：跳过本次循环中continue后面的代码，继续下一次循环

	//for (int i = 0; i < 10; i++)
	//{
	//	if (i == 5)
	//	{
	//		break;
	//	}
	//	printf("%d ", i);
	//}
 //   printf("\n");

 //   for (int i = 0; i < 10; i++)
 //   {
 //       if (i == 5)
 //       {
 //           continue;
 //       }
 //       printf("%d ", i);
 //   }


	//int i = 0;
	// 
 //   while (i < 10)
 //   {
 //       if (i == 5)
 //       {
 //           break;
 //       }
 //       printf("%d ", i);
 //       i++;
 //   }
 //   printf("\n");

	//while (i < 10)
	//{
	//	if (i == 5)
	//	{
	//		continue;//死循环
	//	}
	//	printf("%d ", i);
	//	i++;
	//}

 //   while (i < 10)
 //   {
 //       if (i == 5)
 //       {
 //           i++;
 //           continue;
 //       }
 //       printf("%d ", i);
 //       i++;
 //   }


	//int i = 0;

	//do
	//{
 //       if (i == 5)
 //       {
 //           break;
 //       }
 //       printf("%d ", i);
 //       i++;
	//} while (i < 10);

 //   printf("\n");

 //   do
 //   {
 //       if (i == 5)
 //       {
 //           i++;
 //           continue;
 //       }
 //       printf("%d ", i);
 //       i++;
 //   } while (i < 10);


	//---------------------------------------------------
	
	//循环嵌套
	//找出100~200之间的素数，并打印

	//int flag = 1;
	//for (int i = 100; i <= 200; i++)
	//{
	//	flag = 1;
 //       for (int j = 2; j <= i-1; j++)
 //       {
 //           if (i % j == 0)
 //           {
 //               flag = 0;
 //               break;
 //           }
 //       }
 //       if (flag)
 //       {
 //           printf("%d ", i);
 //       }

	//}
 //   printf("\n");
	
	//优化
	int flag = 1;
	for (int i = 101; i <= 200; i+=2)//偶数不可能为素数
	{
		flag = 1;
		for (int j = 2; j <= sqrt(i); j++)//因子中至少有一个 <= 根号i
		//for (int j = 2; j * j <= i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag)
		{
			printf("%d ", i);
		}

	}
	printf("\n");
	


	return 0;
}